package com.g4.shoppingback.mapper;

import com.g4.shoppingback.pojo.Role;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
* <p>
    *  Mapper 接口
    * </p>
*
* @author admin
* @since 2022-02-19
*/
@Mapper
public interface RoleMapper extends BaseMapper<Role> {

    /**
     * 查询角色数量
     * @param query 可能包含的关键字
     * @return  总条数
     */
    Long selectTotal(String query);

    /**
     * 根据分页信息或角色名查询角色
     * @param query 角色名关键字
     * @param pageStart 起始页数
     * @param pageSize  每页条数
     * @return  返回分页角色信息
     */
    List<Role> selectRoleByPage(@Param("query") String query,
                                @Param("pageStart") Integer pageStart,
                                @Param("pageSize") Integer pageSize);

    /**
     * 根据id查询角色
     * @param id 角色id
     * @return  返回单个用户信息
     */
    @Select("select * from role where id=#{id}")
    Role selectRoleById(Integer id);

    /**
     * 根据角色id删除角色
     * @param id 角色id
     * @return 返回影响行数
     */
    @Delete("delete from role where id=#{id}")
    int deleteRoleById(Integer id);

    /**
     * 根据用户姓名查询角色
     * @param username
     * @return 返回角色信息
     */
    @Select("SELECT r.name FROM dd_users_info u,user_role ur,role r " +
            "WHERE u.id=ur.user_id AND ur.role_id=r.id AND user_name=#{username}")
    String selectRoleByName(String username);

    /**
     * 查询所有角色
     * @return 多个角色
     */
    @Select("select * from role")
    List<Role> selectRoles();

    /**
     * 根据用户id查询角色
     * @param id
     * @return
     */
    @Select("SELECT r.* FROM dd_users_info u,user_role ur,role r " +
            "WHERE u.id=ur.user_id AND ur.role_id=r.id AND u.id=#{id};")
    Role selectRoleByUserId(Integer id);
}
